﻿#include "main.h"
#include "TradingSystem.h"
#include "Strategy.h"

// 本示例采用一个简化的量化交易系统来展示。
// 一个量化交易系统由交易所产生多种事件，交给不同策略来处理.
// 
// Visitor模式处理的是两组class相互访问的双分派场景。
// 派生类数量固定的一组class作为element。不固定的一组class作为visitor
// 在此示例中，交易事件类型是固定的几种，设计为为element。
// 而交易策略则是可以无限扩展的，设计为visitor

int main()
{
	auto strategyA = std::shared_ptr<IStrategy>(new StrategyA);
	auto strategyB = std::shared_ptr<IStrategy>(new StrategyB);

	auto system = TradingSystem();
	system.Add(strategyA);
	system.Add(strategyB);

	system.Run();

	return 0;
}
